package com.zeei.bfs.service;

import java.util.List;

import com.zeei.bfs.vo.DeptinfoVO;
import com.zeei.bfs.vo.OrgTreeVO;
import com.zeei.bfs.vo.QueryDeptParamVO;
import com.zeei.common.vo.TreeNodeVO;
import com.zeei.common.vo.UserVO;

public interface DeptinfoService {
	
	/**
	 * 方法描述：通过主键查找部门
	 *
	 * @param deptId
	 * @return
	 */
	List<DeptinfoVO> queryDeptinfoById(Integer deptId);

	/**
	 * 方法描述：查询部门信息
	 * 
	 * @param deptinfo
	 * @return
	 */
	List<TreeNodeVO<DeptinfoVO>> queryDeptinfo(DeptinfoVO deptinfo);

	/**
	 * 方法描述：通过条件查询部门信息
	 * 
	 * @param company
	 * @return
	 */
//	PageInfo<DeptinfoVO> queryDeptinfo(QueryDeptParamVO queryDeptParam);
	List<TreeNodeVO<DeptinfoVO>> queryDeptinfo(QueryDeptParamVO queryDeptParam,UserVO user);
	
	/**
	 * 方法描述：插入部门信息
	 * 
	 * @param deptinfo
	 * @return
	 */
	boolean addDeptinfo(DeptinfoVO deptinfo);
	
	/**
	 * 方法描述:插入部门信息以及管理员用户和角色
	 *
	 * @param deptinfo
	 * @param user
	 * @return
	 */
	boolean addDeptinfo(DeptinfoVO deptinfo, UserVO user);

	/**
	 * 方法描述：修改部门信息
	 * 
	 * @param deptinfo
	 * @return
	 */
	boolean editDept(DeptinfoVO deptinfo);

	/**
	 * 方法描述：删除部门
	 * 
	 * @param list
	 * @return
	 */
	boolean dropDept(List<String> list);

	/**
	 * 方法描述：验证部门名称
	 * 
	 * @param deptinfo
	 * @return
	 */
	boolean validDeptName(DeptinfoVO deptinfo);

	/**
	 * 方法描述:查询部门和用户的树的数据
	 *
	 * @param roleId
	 * @return
	 */
	List<TreeNodeVO<OrgTreeVO>> queryDeptuserTreeList(Integer roleId);

	/**
	 * 方法描述:添加部门角色用户相关关系
	 *
	 * @param userId
	 * @param roleId
	 * @param ids
	 * @return
	 */
	boolean addDeptuserRelation(Integer userId, Integer roleId, String[] ids);

	/**
	 * 方法描述:查询部门的组织机构树
	 *
	 * @return
	 */
	List<TreeNodeVO<OrgTreeVO>> queryDeptOrgTreeList();


}
